1. Field of the Invention
This invention relates to computer systems and, more particularly, to storage environments employing off-host virtualization of storage devices.
2. Description of the Related Art
Many business organizations and governmental entities rely upon applications that access large amounts of data, often exceeding a terabyte of data, for mission-critical applications. Often such data is stored on many different storage devices, which may be heterogeneous in nature, including many different types of devices from many different manufacturers.
Configuring individual applications that consume data, or application server systems that host such applications, to recognize and directly interact with each different storage device that may possibly be encountered in a heterogeneous storage environment would be increasingly difficult as the environment scaled in size and complexity. Therefore, in some storage environments, specialized storage management software and hardware may be used to provide a more uniform storage model to storage consumers. Such software and hardware may also be configured to present physical storage devices as virtual storage devices to computer hosts, and to add storage features not present in individual storage devices to the storage model. For example, features to increase fault tolerance, such as data mirroring, snapshot/fixed image creation, or data parity, as well as features to increase data access performance, such as disk striping, may be implemented in the storage model via hardware or software. The added storage features may be referred to as storage virtualization features, and the software and/or hardware providing the virtual storage devices and the added storage features may be termed “virtualizers” or “virtualization controllers”. Virtualization may be performed within computer hosts, such as within a volume manager layer of a storage software stack at the host, and/or in devices external to the host, such as virtualization switches or virtualization appliances. Such external devices providing virtualization may be termed “off-host” virtualizers. Off-host virtualizers may be connected to the external physical storage devices for which they provide virtualization functions via a variety of interconnects, such as Fiber Channel links, Internet Protocol (IP) networks, and the like.
In some storage environments employing virtualization, off-host virtualizers such as virtualization switches may be capable of performing certain virtualization-related functions, but may not be flexible enough to handle other virtualization-related functions efficiently. For example, if an I/O request from a host or storage consumer maps to blocks within two different back-end physical storage devices (e.g., if a write request may require blocks at two different back-end SCSI disk arrays to be updated), some virtualizing switches may serialize the back-end operations instead of performing them in parallel. If the I/O request were pre-partitioned into multiple I/O requests, such that each request was limited to a single back-end physical storage device, the switch may schedule the multiple I/O requests in parallel instead of serializing them. In addition, for certain types of I/O operations, where for example more than one network path from the host to a target storage device is available, the use of one path by the host may result in more efficient I/Os (e.g., by traversing fewer network hops or switches) than the use of other paths. Information on the multiple paths may be available from the off-host virtualizer. A mechanism that allows cooperation between off-host virtualizers and host-based virtualization software to optimize I/O operations may therefore be desirable.